1

問題解決エージェント入門

PolyU COMP5511Lecture 2
00:00

反射から計画へ

エージェント設計の進化において、私たちは 反射エージェントから、シンプルなルールに基づいて知覚を直接行動にマッピングする(例:「前方の車がブレーキを踏んだら、ブレーキをかける」)、 問題解決エージェントへと移行します。反射エージェントは目の前の状況に基づいて動作しますが、問題解決エージェントは ゴールベースです。彼らは行動の将来の結果を考慮し、特定の目的を満たす行動の系列を見つけ出します。

  • 反射エージェント: $Action = Function(Percept)$
  • 計画エージェント: $Action\_Sequence = Search(State, Goal)$

原子的状態表現

この基礎的なレベルでは、エージェントは 原子的表現を利用します。これは、世界の状態がブラックボックスとして扱われることを意味します。つまり、探索アルゴリズムから見て内部構造のない単一のノードとして扱われます。エージェントは以下のことだけを推論します:

  • 状態($S$): 環境のスナップショット。
  • 行動($A$): 状態間の遷移。
  • ゴールテスト: 状態 $s \in S_{goal}$ かどうかを判定する真偽値のチェック。

問題解決ループ

問題解決エージェントは、環境をナビゲートするために明確な4ステップのサイクルに従います:

  1. ゴール定式化: 現在の状況に基づいて、どの目的を追求するかを決定する。
  2. 問題定式化: 現実世界を数学的モデル(状態と行動)に抽象化する。
  3. 探索: 行動の系列をシミュレートして、 最適な経路を見つける。
  4. 実行: (静的環境を前提として)探索フェーズで見つかった行動を、さらなる熟考なしに実行する。
Python 実装(agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)